package com.xyd.service;

import com.xyd.entity.Order;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 类描述：
 *
 * @author 张吉哲
 * @date 2021/1/11 16:30
 */
public interface OrderService {

  /**
   * 根据用户的id查询用户的订单信息
   *
   * @param euUserId 用户的id
   * @return 订单信息
   */
  Order getOrderByUserId(String euUserId);

  /**
   * 获取当前页面的信息
   *
   * @param start    起始订单
   * @param pageSize 一个页面的的大小
   * @return 信息
   */
  List<Order> getAllOrderByPage(@Param("start") Integer start, @Param("pageSize") Integer pageSize);

  /**
   * 获取一共的订单数量
   *
   * @return
   */
  int getCountOrder();

  /**
   * 根据id和名字获取订单信息
   *
   * @return
   */
  List<Order> getOrderByIdName(Order order);

  /**
   * 根据主键id获取对应的信息
   *
   * @param id 主键id
   * @return 相关信息
   */
  Order getOrderByEoId(@Param("id") long id);

  /**
   * 根据主键id修改列表
   *
   * @param order 对象
   * @return 修改后的信息
   */
  int changeOrderByEoId(Order order);

  /**
   * 根据主键id删除订单
   *
   * @param id 主键id
   * @return 是否成功
   */
  int deleteOrderByEoId(@Param("id") long id);

  /**
   * 添加订单并返回订单信息
   *
   * @param epIds 商品的id
   * @return 订单信息
   */
  Order generateOrder(String[] epIds);

  /**
   * 清空购物车时添加订单
   *
   * @param euUserId   用户id
   * @param euUsername 用户名
   * @param euAddress  用户家庭地址
   * @param eoCost     总价
   * @return 订单主键
   */
  Long addOrder(String euUserId, String euUsername, String euAddress, double eoCost);
}
